jsp:useBean介绍
什么是JavaBean
JavaBean是特殊的Java类,使用Java语言书写,并且遵守JavaBean API规范。
接下来给出的是JavaBean与其它Java类相比而言独一无二的特征:
- 提供一个默认的无参构造函数。
- 需要被序列化并且实现了Serializable接口。
- 可能有一系列可读写属性。
- 可能有一系列的”getter”或”setter”方法
JavaBean属性
一个JavaBean对象的属性应该是可访问的。这个属性可以是任意合法的Java数据类型,包括自定义Java类。
一个JavaBean对象的属性可以是可读写,或只读,或只写。JavaBean对象的属性通过JavaBean实现类中提供的两个方法来访问: - getPropertyName()
举例来说,如果属性的名称为myName,那么这个方法的名字就要写成getMyName()来读取这个属性。这个方法也称为访问器 setPropertyName()
举例来说,如果属性的名称为myName,那么这个方法的名字就要写成setMyName()来写入这个属性。这个方法也称为写入器。访问JavaBean
jsp:useBean 标签可以在JSP中声明一个JavaBean,然后使用。声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。jsp:useBean 标签的语法格式如下:
123<jsp:useBean id="bean 的名字" scope="bean 的作用域" class="bean类"><jsp:setProperty name="变量名" property="*"/></jsp:useBean>id属性用于指定JavaBean实例对象的引用名称
- class属性用于指定JavaBean的完整类名(即需要带有包名)
- scope属性用于指定JavaBean实例对象所存储的域范围,只能为page,request,session或application,默认为page。
标签 jsp:setProperty 用来设置已经实例化的Bean对象的属性:
相应的含义:
- 该形式是设置Bean 属性的快捷方式.在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。property = “*”表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
- 使用request对象中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean 的属性名,而且Bean 属性和request参数的名字应相同。也就是说,如果在Bean 中有setUserName(String userName)方法,那么,propertyName的值就是”userName”.这种形式灵活性较强,可以有选择的对Bean中的属性赋值
- value用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如“true”)通过Boolean.valueOf转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf转换。
- param指定用哪个请求参数作为Bean属性的值。Bean 属性和request参数的名字可以不同。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
示例:制作一个简单计算器
不使用JavaBean
直接使用javascript:
Calculator.jsp
使用JavaBean
calculator2.jsp
Calculator.java